热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

标量|被覆_PHP编程能力提升系列日常工作常见问题总结

篇首语:本文由编程笔记#小编为大家整理,主要介绍了PHP编程能力提升系列日常工作常见问题总结相关的知识,希望对你有一定的参考价值。一、引言

篇首语:本文由编程笔记#小编为大家整理,主要介绍了PHP 编程能力提升系列 日常工作常见问题总结相关的知识,希望对你有一定的参考价值。



一、引言

   记录并总结日常遇到的问题,做到深入思考,避免再次入坑;

  本篇是记录了日常工作中遇到的一些问题,类似于流水账形式;如果感觉有点乱,多包容哈


二、详情

1、5.3.0 + 以上的版本才支持命名空间;5.3.0 + 版本去除了safe_mode的选项,默认是关闭状态

2、类是其基类(包括抽象类)和接口的实例,也就是instanceof 为true;

3、stdClass是所有类的基类

4、echo print 都可以用来输出字符串;printf可以按照一定格式输出数据;sprintf可以按照一定格式返回字符串(%s %d);print_r可以打印任何数据,和var_dump很类似;

5、对于一个字符串,可以使用str_split进行分割为数组,也可以直接将字符串按索引取数据,如$str[1];通过strlen获取到字符串的长度之后就可以进行字符串的遍历操作了。

6、对象的复制是引用类型的复制,除此之外的其他数据类型的复制都是值复制,一个变量的改变并不会引起另外一个变量的改变。

7、对于对象类型的参数传递是引用传递(方法里修改了形参的值会影响到实参),其他类型的参数传递都是值传递;

8、常量定义的简写:

defined(NAME) or define(NAME, 'lily');
//注意:
//对于在类或者接口中定义的常量则一定要通过类或者接口访问才可

9、php5引入了类型提示的概念,在函数定义时,可以强制定义某个参数为对象或者数组,但对于标量数据类型不起作用,如下面的函数定义:

function show (string $arr) //会将前面的string当作类名
var_dump($arr);
show('lily');

会报如下的错误:

9、list只可用于索引数组而不能用于关联数组

list($name, $sex, $age) = array('lily', 1, 30);

10、range函数用于创建范围数组,不仅可以用于数字,还可用于字符数组的创建,如下所示:

range('a', 'd');
range(1, 10, 3); //第三个参数用于设置跨度

11、array_pop、array_push、array_shift、array_unshift操作数组之后,对于索引数组而言,都会重新组织一下

数据。

12、parse_url可以解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。可以通过指定第二个参数来获取指定的内容,第二个参数有PHP_URL_SCHEMEPHP_URL_HOSTPHP_URL_PORTPHP_URL_USERPHP_URL_PASSPHP_URL_PATHPHP_URL_QUERYPHP_URL_FRAGMENT

$_SERVER全局变量里的有些内容与这个会有所重叠。

13、strstr可以通过设置第三个参数返回前一部分字符串。(5.3+版本才支持)

$url = 'http://username:password@hostname/controller/action?arg=value#anchor';
echo strstr($url, 'hostname');
//输出为hostname/controller/action?arg=value#anchor,包含hostname字符串
echo strstr($url, 'hostname',true);
//输出为http://username:password@,不包含hostname

14、http_build_query用于生成 URL-encode 之后的请求字符串,常常用于数组,但也可以用于对象;

$data = array(
'foo'=>'bar',
'baz'=>'boom',
'cow'=>'milk',
'php'=>'hypertext processor'
);

echo http_build_query($data) . "\\n";

//输出为foo=bar&baz=boom&cow=milk&php=hypertext+processor

15、PHP支持四种属性作用域:public private protected static;方法支持六种作用域:public private protected final static abstract;

16、memory_limit 设置内存;max_execution_time设置脚本的最大执行时长;

17、PHP7 之前对于普通的方法也可以通过类来调用,不过会报strict 错误;在PHP7 之后,只有静态方式才允许通过类来调用,否则会报fatal错误;

18、子类可以覆盖父类中定义的属性和方法,设置可以修改访问修饰符

19、final的类不可被继承;final的方法不允许被覆盖;不允许定义final属性

20、子类不会显示的调用父类的构造函数,只会在子类不存在构造函数或者在子类中使用parent::__construct()方法时才会调用父类的构造函数;

21、对于在类或者接口中生命的常量,则只能通过接口或者类来调用,而通过define生命的常量可以直接调用

22、因为静态属性、静态方法不属于某个对象,它是与类有关的,所以只能通过类来调用,而且静态方法中没有上下文环境,方法里面不能使用$this调用变量,只能使用类(类名/self)来引用静态属性;其他属性和方法则是与具体的对象有关的,所以需要通过对象来调用;

23、PHP不支持方法重载、操作符重载、多重继承

24、接口中除了可以定义一些方法外,还可以定义常量;但是这个常量只可以通过接口来访问

25、接口可以多继承,而类只可以单继承

26、PHP的错误级别可以在配置文件中通过error_reporting设置,在开发环境下,开启display_errors并将错误级别设置为E_ALL&E_STRICT;其中E_STRICT会显示一些版本兼容的提示信息。

27、对于程序中有可能产生异常的地方一定要记得try catch处理,或者设置一个全局异常捕捉处理函数:set_exception_handler();推荐采用第二种,这样在程序中就不用过多的考虑异常的问题;一定要保证程序的健壮性;

28、与目录、文件相关的常见系统函数有basename、dirname、pathinfo、realpath;其中basename用来返回目录的文件以及后缀部分;dirname用于返回路径的目录部分;pathinfo函数会返回一个数组,包含目录、文件名、后缀等部分;realpath用来返回去除符号链接相对路径之后得到的绝对路径;

$path = '/home/work/orp/webroot/baidu/mapx/index.php';
var_dump(pathinfo($path));
//输出为array(4) ["dirname"]=> string(33) "/home/work/orp/webroot/baidu/mapx" ["basename"]=> string(9) "index.php" 
//["extension"]=> string(3) "php" ["filename"]=> string(5) "index"
echo basename($path,'.php');
//输出为index
echo basename($path);
//输出为index.php
echo dirname($path);
//输出为/home/work/orp/webroot/baidu/mapx/
echo realpath('/home/work/orp/../../mapx/index.php');
//输出为/home/mapx/index.php

29、parse_url可以对URL进行解析,同样parse_str可以对字符串进行解析。其中parse_url的返回结果是一个数组,而parse_str的解析结果需要放到第二个参数中,类型为数组


推荐阅读
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • SpringBoot简单日志配置
     在生产环境中,只打印error级别的错误,在测试环境中,可以调成debugapplication.properties文件##默认使用logbacklogging.level.r ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 本文讨论了在ASP中创建RazorFunctions.cshtml文件时出现的问题,即ASP.global_asax不存在于命名空间ASP中。文章提供了解决该问题的代码示例,并详细解释了代码中涉及的关键概念,如HttpContext、Request和RouteData等。通过阅读本文,读者可以了解如何解决该问题并理解相关的ASP概念。 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
author-avatar
河南华萃酒业_359
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有